/*
 * File:   Player.h
 * Author: root
 *
 * Created on November 15, 2008, 9:04 PM
 */

#include "GameState.h"
#include "Move.h"

#ifndef _PLAYER_H
#define	_PLAYER_H

class Player {
protected:
    CCardStack hand;
    int order;
    GameState* game;

public:

    Player(int tableOrder) : order(tableOrder) {}

    virtual void setGame(GameState* newGame) {
      game = newGame;
    }

    virtual void receiveDeal(CCardStack cards) {
        hand.Clear();
        hand.Push(cards);
    }

    CCardStack revealHand() {
        return hand;
    }

    const CCardStack& getHandStack() const {
        return hand;
    }

    virtual Move decideMove() {return decideMove(game);}
    virtual Move decideMove(GameState*) = 0;  // This function should update the game state
//     virtual void opponentMove(int, const Move&) = 0;

};

#endif	/* _PLAYER_H */

